using System;
using Symbonix.Library.DataStructure;
using System.Web.Security;
namespace Symbonix.NorSoNet.Security.BLL.Membership {
	
	public interface IUser {

        int Id
        {
            get;
            set;
        }
		
		String UserName {
			get;
            set;
		}
		
		String Email {
			get;
			set;
		}
		
		String FirstName {
			get;
			set;
		}
		
		String LastName {
			get;
			set;
		}
		
		String Comment {
			get;
			set;
		}
		
		bool IsApproved {
			get;
            set;
		}
		
		bool IsLockedOut {
			get;
            set;
		}
		
		DateTime CreationDate {
			get;
            set;
		}
		
		DateTime LastLoginDate {
			get;
            set;
		}
		
		DateTime LastActivityDate {
			get;
            set;
		}
		
		DateTime LastPasswordChangedDate {
			get;
            set;
		}
		
		DateTime LastLockoutDate {
			get;
            set;
		}

		IUser Load(int id);		
		IUser Create(String userName, String password, String email, String firstName, String lastName, string role, bool isApproved, out MembershipCreateStatus status);	
		IUser GetUserByUserName(String userName);
        IUser GetUserByEmail(String email);
		ReadWriteCustomCollection<IUser> FindUser(String searchString);		
		bool ChangePassword(String oldPassword, String newPassword);
        bool ResetPassword(String userName, String newPassword);		
		bool ChangeEmail(String password, String newEmail);
        bool ValidateUser(string username, string password);
        bool UpdateUserFullName(string firstName, string lastName);
        bool CreateNewPassword(Guid encryptedUserName, string userEmail, string newPassword);
	}
}
